﻿Public Class frm_ABM_Inscripcion
    Enum estado
        insertar      
        eliminar
        ver
    End Enum

    Dim _accesoBD As New AccesoBD
    Dim _accion As estado
    Dim _legajo, _idCurso As Integer
    Dim _fecha As DateTime
    Dim _nombre, _apellido, _curso As String

    Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salir.Click
        Me.Close()
    End Sub

    Private Sub frm_ABM_Inscripcion_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If MessageBox.Show("Esta seguro que desea salir?!", "Importante", MessageBoxButtons.YesNo, MessageBoxIcon.Question) _
                    = Windows.Forms.DialogResult.No Then
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    End Sub

    Private Sub cargar_grilla_alumnos()
        Dim tabla As New DataTable
        Dim consulta As String = ""

        consulta = "select legajoAlumno,nombre,apellido from Alumnos where estado = 0"

        tabla = _accesoBD.ejecutaSQL(consulta)

        Me.grid_alumnos.Rows.Clear()

        Dim c As Integer = 0

        For c = 0 To tabla.Rows.Count - 1
            Me.grid_alumnos.Rows.Add(tabla.Rows(c)("legajoAlumno"), tabla.Rows(c)("nombre"), tabla.Rows(c)("apellido"))
        Next

    End Sub

    Private Sub cargar_grilla_cursos()
        Dim tabla As New DataTable
        Dim consulta As String = ""

        consulta = "SELECT Cursos.idCurso, TipoCurso.nombre, Cursos.fechaInicio, Turnos.nombre AS turno, Cursos.precio"
        consulta &= " FROM Cursos INNER JOIN"
        consulta &= " TipoCurso ON Cursos.idTipoCurso = TipoCurso.idTipoCurso INNER JOIN"
        consulta &= " Turnos ON Cursos.idTurno = Turnos.idTurno"

        tabla = _accesoBD.ejecutaSQL(consulta)

        Me.grilla_cursos.Rows.Clear()

        Dim c As Integer = 0

        For c = 0 To tabla.Rows.Count - 1
            Me.grilla_cursos.Rows.Add(tabla.Rows(c)("idCurso"), tabla.Rows(c)("nombre"), FormatDateTime(tabla.Rows(c)("fechaInicio")), tabla.Rows(c)("turno"), tabla.Rows(c)("precio"))
        Next

    End Sub

    Private Sub cargar_grilla_alumnos_busqueda()
        Dim consulta As String
        Dim tabla As New DataTable

        consulta = "select legajoAlumno,nombre,apellido from Alumnos where estado = 0"
        consulta &= " and nombre like '" & Me.txt_nombre_busca.Text & "'"
        consulta &= " or apellido like '" & Me.txt_apellido_busca.Text & "'"

        tabla = _accesoBD.ejecutaSQL(consulta)

        Me.grid_alumnos.Rows.Clear()

        Dim c As Integer = 0

        For c = 0 To tabla.Rows.Count - 1
            Me.grid_alumnos.Rows.Add(tabla.Rows(c)("legajoAlumno"), tabla.Rows(c)("nombre"), tabla.Rows(c)("apellido"))
        Next
    End Sub

    Private Sub cargar_grilla_cursos_busqueda()
        Dim consulta As String
        Dim tabla As New DataTable

        consulta = "SELECT Cursos.idCurso, TipoCurso.nombre, Cursos.fechaInicio, Turnos.nombre AS turno, Cursos.precio"
        consulta &= " FROM Cursos INNER JOIN"
        consulta &= " TipoCurso ON Cursos.idTipoCurso = TipoCurso.idTipoCurso INNER JOIN"
        consulta &= " Turnos ON Cursos.idTurno = Turnos.idTurno"
        consulta &= " WHERE Cursos.idTipoCurso = " & Me.cmbBusqCurso.SelectedValue

        tabla = _accesoBD.ejecutaSQL(consulta)

        Me.grilla_cursos.Rows.Clear()

        Dim c As Integer = 0

        For c = 0 To tabla.Rows.Count - 1
            Me.grilla_cursos.Rows.Add(tabla.Rows(c)("idCurso"), tabla.Rows(c)("nombre"), FormatDateTime(tabla.Rows(c)("fechaInicio")), tabla.Rows(c)("turno"), tabla.Rows(c)("precio"))
        Next
    End Sub

    Private Sub cargar_combos()
        _accesoBD.load_combo(Me.cmbBusqCurso, _accesoBD.devuelveTabla("TipoCurso"), "idTipoCurso", "nombre")
    End Sub

    Private Sub frm_ABM_Inscripcion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        _accion = estado.ver
        comportamientoBotones()
        Me.cargar_grilla_alumnos()
        Me.cargar_combos()
        Me.cargar_grilla_cursos()
        Me.cargarGrillaInscriptos()
    End Sub

    Private Sub btn_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_buscar.Click
        If String.IsNullOrWhiteSpace(Me.txt_nombre_busca.Text) And String.IsNullOrWhiteSpace(Me.txt_apellido_busca.Text) Then
            Me.cargar_grilla_alumnos()
        Else
            Me.cargar_grilla_alumnos_busqueda()
        End If
    End Sub

    Private Sub btn_refrescar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_refrescar.Click
        Me.cargar_grilla_alumnos()
        Me.cargar_grilla_cursos()
        Me.cmbBusqCurso.SelectedIndex = -1
        Me.txt_apellido_busca.Text = ""
        Me.txt_nombre_busca.Text = ""
    End Sub

    Private Sub comportamientoBotones()
        If _accion = estado.ver Or _accion = estado.eliminar Then
            Me.grupoAlumnos.Enabled = False
            Me.grupoCursos.Enabled = False
            Me.btn_grabar.Enabled = False
        Else
            Me.grupoAlumnos.Enabled = True
            'Me.grupoCursos.Enabled = True
            Me.btn_grabar.Enabled = True
        End If
    End Sub

    Private Sub btn_nuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_nuevo.Click
        _accion = estado.insertar
        comportamientoBotones()
    End Sub

    Private Sub grilla_cursos_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grilla_cursos.CellContentClick
        '_curso = Me.grilla_cursos.CurrentRow.Cells("col_curso").Value
        '_fecha = Me.grilla_cursos.CurrentRow.Cells("col_fecha").Value.ToString
    End Sub

    Private Sub grid_alumnos_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grid_alumnos.CellContentClick
        'Me.grupoCursos.Enabled = True
        '_legajo = Me.grid_alumnos.CurrentRow.Cells("col_legajo").Value
    End Sub

    Private Sub btn_grabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_grabar.Click
        If Me.validarExistente Then
            If MessageBox.Show(Me.mensaje & vbCrLf & "Desea realizar la acción?", "Importante", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
                Me.insertar()
                Me.cargarGrillaInscriptos()
                MessageBox.Show("Se grabo correctamente !", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Information)                
                _accion = estado.ver
                Me.comportamientoBotones()
            End If
        Else
            MessageBox.Show("Ya existe el alumno inscripto en el curso", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub

    Private Sub insertar()
        Dim consulta As String
        consulta = "insert into CursadoXAlumno (legajoAlumno,idCurso,fechaInicio) values( "
        consulta &= _legajo & ", " & _idCurso & ", '" & _fecha & "')"

        _accesoBD._insertar(consulta)
    End Sub

    Private Sub cargarGrillaInscriptos()
        Dim consulta As String
        Dim tabla As New DataTable

        consulta = "SELECT Alumnos.legajoAlumno, Alumnos.nombre, Alumnos.apellido, TipoCurso.nombre AS curso, CursadoXAlumno.fechaInicio"
        consulta &= " FROM CursadoXAlumno INNER JOIN"
        consulta &= " Alumnos ON CursadoXAlumno.legajoAlumno = Alumnos.legajoAlumno INNER JOIN"
        consulta &= " Cursos ON CursadoXAlumno.idCurso = Cursos.idCurso AND CursadoXAlumno.fechaInicio = Cursos.fechaInicio INNER JOIN"
        consulta &= " TipoCurso ON Cursos.idTipoCurso = TipoCurso.idTipoCurso"

        tabla = _accesoBD.ejecutaSQL(consulta)

        Me.grillaInscriptos.Rows.Clear()

        Dim c As Integer = 0

        For c = 0 To tabla.Rows.Count - 1
            Me.grillaInscriptos.Rows.Add(tabla.Rows(c)("legajoAlumno"), tabla.Rows(c)("nombre"), tabla.Rows(c)("apellido"), tabla.Rows(c)("curso"), FormatDateTime(tabla.Rows(c)("fechaInicio")))
        Next
    End Sub

    Public Function validarExistente() As Boolean
        Dim consulta As String
        Dim tabla As New DataTable

        consulta = "select * from CursadoXAlumno where legajoAlumno = " & _legajo
        consulta &= " and idCurso = " & _idCurso & " and fechaInicio = '" & _fecha & "'"

        tabla = _accesoBD.ejecutaSQL(consulta)

        If tabla.Rows.Count = 1 Then
            Return False
        Else
            Return True
        End If
    End Function

    Private Sub grid_alumnos_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grid_alumnos.CellClick
        Me.grupoCursos.Enabled = True
        _legajo = Me.grid_alumnos.CurrentRow.Cells("col_legajo").Value
        _nombre = Me.grid_alumnos.CurrentRow.Cells("col_nombre").Value.ToString
        _apellido = Me.grid_alumnos.CurrentRow.Cells("col_apellido").Value.ToString
    End Sub

    Private Sub grilla_cursos_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grilla_cursos.CellClick
        _idCurso = Me.grilla_cursos.CurrentRow.Cells("col_curso").Value
        _fecha = Me.grilla_cursos.CurrentRow.Cells("col_fecha").Value.ToString
        _curso = Me.grilla_cursos.CurrentRow.Cells("columnaCurso").Value.ToString
    End Sub

    Private Function mensaje() As String
        Dim cadena As String
        cadena = "Va a inscribir el alumno " & _apellido & ", " & _nombre & " en el curso " & _curso
        Return cadena
    End Function

    Private Sub EliminarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarToolStripMenuItem.Click
        _legajo = Me.grillaInscriptos.CurrentRow.Cells("col_leg").Value
        If MessageBox.Show("Esta seguro que desea eliminar el registro?!", "Importante", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
            Me.eliminar(_legajo)
            Me.cargarGrillaInscriptos()
            _accion = estado.ver
            comportamientoBotones()
        End If
    End Sub

    Private Sub eliminar(ByVal legajo As Integer)
        Dim consulta As String

        consulta = "delete from CursadoXAlumno where legajoAlumno = " & legajo

        _accesoBD._eliminar(consulta)
    End Sub

    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        If Me.cmbBusqCurso.SelectedValue = -1 Then
            Me.cargar_grilla_cursos()
        Else
            Me.cargar_grilla_cursos_busqueda()
        End If
    End Sub

    Private Sub btn_cancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_cancelar.Click
        _accion = estado.ver
        comportamientoBotones()
    End Sub
End Class